package com.example.service;

import com.example.entity.LeaveRequest;
import org.flowable.task.api.Task;
import org.flowable.task.api.history.HistoricTaskInstance;

import java.util.List;
import java.util.Map;

/**
 * 工作流服务接口
 */
public interface FlowService {
    
    /**
     * 启动请假流程
     * @param leaveRequest 请假申请信息
     * @return 流程实例ID
     */
    String startLeaveProcess(LeaveRequest leaveRequest);
    
    /**
     * 查询指定用户的待办任务
     * @param assignee 用户ID
     * @return 待办任务列表
     */
    List<Task> findTasksByAssignee(String assignee);
    
    /**
     * 完成任务
     * @param taskId 任务ID
     * @param variables 流程变量
     */
    void completeTask(String taskId, Map<String, Object> variables);
    
    /**
     * 获取流程历史
     * @param processInstanceId 流程实例ID
     * @return 历史任务列表
     */
    List<HistoricTaskInstance> getProcessHistory(String processInstanceId);
    
    /**
     * 获取流程变量
     * @param executionId 执行实例ID
     * @return 流程变量映射
     */
    Map<String, Object> getProcessVariables(String executionId);
}